/**
 * GraphObj
 *
 */
if(typeof (module) !="undefined"){
    module.exports = GraphObj;

    var PrintObj = require('./PrintObj');
    var CompoundPath = require('./../common/CompoundPath');
    var Serializer = require('./Serializer');
    var Effect = require('../common/Effect');
}


function GraphObj() {
    PrintObj.call(this);
    this.di = -1; // 在数据库中的Id ,db-id,
    this.cp = new CompoundPath(); // 图形轮廓

    this.ct = Serializer.prototype.CLASS_TYPE_GRAPHOBJ;
}

GraphObj.prototype = new PrintObj();
// 转成json字符串
GraphObj.prototype.toJson = function () {

    var superJson = PrintObj.prototype.toJson.call(this);
    superJson = superJson.substr(1, superJson.length - 2);

    var ret = '{';
    ret += superJson;
    ret += ',';
    ret += ('"di":' + '"' + this.di + '"');

    if(this.cp){
        ret += ',';
        ret += ('"cp":' + this.cp.toJson());
    }

    ret += '}';
    return ret;
}
// 从json对象中解析出PointPath
GraphObj.prototype.fromJson = function (jsonObj, versionId) {
    PrintObj.prototype.fromJson.call(this, jsonObj, versionId);
    this.di = jsonObj.di;
    if(jsonObj.hasOwnProperty("cp"))
    {
        this.cp.fromJson(jsonObj.cp, versionId);
    }
}

/**
 * 将对象添加到PDF中
 * @param doc  PDFDocument结构
 * @param info  对象结构，属性如下：
 *                  docOriginX  文档的新原点 在原始原点的 坐标
 *                  docOriginY  文档的新原点 在原始原点的 坐标
 */
GraphObj.prototype.addToPdf = function (doc, info) {
    // 保存上下文环境
    Serializer.prototype.before.call(this, doc, info);

    // 剪切蒙版
    if (info.clip) {

    } else {
        // 表示普通对象
//        doc.fillColor(this.color())
//            .strokeColor(this.strokeColor())
//            .lineWidth(this.strokeWidth())
//            .opacity(this.al);
//        var svgPath = this.cp.toSvgPath();
//        doc.path(svgPath).fill('non-zero');


        var svgPath = this.cp.toSvgPath();
        if(typeof  console !='undefined')   console.log(svgPath)

        Serializer.prototype.drawSvgPath.call(this, doc, this.color(), this.strokeColor(),
            this.strokeWidth(), this.lineCap(), this.lineJoin(),
            this.miterLimit(), this.al, svgPath);


    }

    // 还原上下文环境
    Serializer.prototype.after.call(this, doc, info);
}


/**
 * 取得模板中所有图形对象,
 * 参数：ignoreEmpty   Di，true表示需要过滤掉无效di的文字对象
 * 返回：数组
 */
GraphObj.prototype.getGraphObjs = function(ignoreEmptyDi){
    var ret = new Array();
    if(!ignoreEmptyDi){
        ret.push(this);
    }else{
        if(this.di!=-1 && this.di.length>0){
            ret.push(this);
        }
    }
    return ret;
}
